package Map_Study.TreeMap_01;

import java.util.StringJoiner;
import java.util.TreeMap;

public class TreeMapDemo3 {
    public static void main(String[] args) {
        /*
            需求：字符串中"aababdbaddabaadbbbaaddbabd"
            请统计字符串中每一个字符串出现的次数，并按照以下格式输出
            a（5）b（3）c（3）......

            分析：
                统计 ----> 计数器思想
                弊端：如果我们要统计的东西比较多，非常的不方便
            新的统计思想：
            HasMap：
            TreeMap：
            如果题目中没要求对结果进行排序，默认使用HashMap（效率高）
            如果题目中要求对结果进行排序，请使用TreeMap

            键：表示要统计的内容
            值：表示次数
         */

        //编程思想：写代码时先不急着去创建对象或者方法，等用到时再去创建
        String str = "aababdbaddabaadbbbaaddbabd";
        int count;
        TreeMap<Character, Integer> tm = new TreeMap<>();
        for (int i = 0; i < str.length(); i++) {
            char s = str.charAt(i);
            if (tm.containsKey(s)) {
                count = tm.get(s) + 1;
                tm.put(s, count);
            } else {
                tm.put(s, 1);
            }
        }
        
        // a（5）b（3）c（3）......指定格式输出
        //StringBuilder sb = new StringBuilder();
        //tm.forEach((key, value) -> sb.append(key).append("(").append(value).append(")"));

        StringJoiner sj = new StringJoiner("" ,"","");
        tm.forEach((key, value) -> sj.add(key + " (").add(value + ") "));
        System.out.println(sj);
    }

}
